import { createRouter, createWebHistory } from 'vue-router'
import IndexView from "@/views/admin/IndexView.vue";
import HomeView from "@/views/admin/HomeView.vue";
import CategoryView from "@/views/admin/CategoryView.vue";
import AdminView from "@/views/admin/AdminView.vue";
import GoodsView from "@/views/admin/GoodsView.vue";
import OrderView from "@/views/admin/OrderView.vue";
import UserView from "@/views/admin/UserView.vue";
import LoginView from "@/views/admin/LoginView.vue";
import { useTokenStore } from '@/stores/token';
import UserLoginView from "@/views/user/LoginView.vue"
import UserHomeView from "@/views/user/HomeView.vue"
import UserIndexView from "@/views/user/indexView.vue"
import SearchView from "@/views/user/SearchView.vue";
import RegView from "@/views/user/RegView.vue";
import UserGoodsView from "@/views/user/UserGoodsView.vue"
import CreatOrderView from "@/views/user/CreatOrderView.vue";
import CartView from "@/views/user/CartView.vue";
import CenterView from "@/views/user/CenterView.vue";
import AddrListView from "@/views/user/center/AddrListView.vue";
import CollectListView from "@/views/user/center/CollectListView.vue";
import InfoView from "@/views/user/center/InfoView.vue";
import UserOrderListView from "@/views/user/center/OrderListView.vue"
import OrderListView from "@/views/user/center/OrderListView.vue";
import PassWordView from "@/views/user/center/PassWordView.vue";
import RechargeView from "@/views/user/center/RechargeView.vue";
import PayView from "@/views/user/PayView.vue";
const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/',
      name: 'home',
      component: UserHomeView,
      redirect: '/user/index',
      children: [
        {
          path: '/user/login',
          name: 'user_login',
          component: UserLoginView,
        },{
          path: '/user/reg',
          name: 'user_reg',
          component: RegView,
        },{
          path: '/user/index',
          name: 'user_index',
          component: UserIndexView,
        },{
          path: '/user/search/:categoryId?/:keyword?',
          name: 'user_search',
          props: true,
          component: SearchView,
        },{
          path: '/user/goods',
          name: 'user_goods',
          component: UserGoodsView,
        },{
          path: '/user/pay',
          name: 'user_pay',
          component:PayView,
        }
        ,{
          path: '/user/cart',
          name: 'user_cart',
          component:CartView,
        },{
          path: '/user/creatorder',
          name: 'user_creatorder',
          component: CreatOrderView,
        },{
          path: '/user/center',
          name: 'user_center',
          component: CenterView,
          children: [
              {
                path: '/user/addrList',
                name: 'user_addrList',
                component:AddrListView,
              },{
              path: '/user/collectList',
              name: 'user_collectList',
              component:CollectListView,
              },{
              path: '/user/info',
              name: 'user_info',
              component: InfoView,
              },{
              path: '/user/orderList',
              name: 'user_orderList',
              component: OrderListView,
              },{
              path: '/user/passWord',
              name: 'user_passWord',
              component: PassWordView,
              },{
              path: '/user/recharge',
              name: 'user_recharge',
              component: RechargeView,
              }
          ]
        }

      ]
    },
    {
      path: '/admin/login',
      name: 'admin_login',
      component: LoginView,
    }, {
      path: '/admin/home',
      name: 'admin_home',
      component: HomeView,
      redirect: '/admin/index',
      children: [
        {
          path: '/admin/index',
          name: 'admin_index',
          component: IndexView,
        },
        {
          path: '/admin/category',
          name: 'admin_category',
          component: CategoryView,
        },
        {
          path: '/admin/admin',
          name: 'admin_admin',
          component: AdminView,
        },
        {
          path: '/admin/goods',
          name: 'admin_goods',
          component: GoodsView,
        },
        {
          path: '/admin/order',
          name: 'admin_order',
          component: OrderView,
        },
        {
          path: '/admin/user',
          name: 'admin_user',
          component: UserView,
        }

      ]
    },


  ]
})
router.beforeEach((to, from, next) => {
  //TODO将来还会对其他页面放行，前台首页，搜索页，登录页，注册页，详情页；
  if (to.path == '/admin/login' ||
      to.path == '/user/login' ||
      to.path == '/user/index' ||
      to.path == '/user/reg' ||
      to.path == '/user/goods' ||
      to.path.startsWith('/user/search')||
      to.path == '/') {
    next();
  } else {
    const tokenStore =useTokenStore();
    if (tokenStore.tokenStr) {
       next();
    } else {
      // 如果需要认证但用户未登录，则重定向到登录页面
      // let currentPath = router.currentRoute.value.path;
      if (to.path.startsWith("/admin")){
        next('/admin/login');
      }else {
        next('/user/login');
      }
    }
  }
});
export default router
